package com.ruoyi.swla2.service.impl;

import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.swla2.model.FreezeDataQueryModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.swla2.mapper.DfqFreezeMapper;
import com.ruoyi.swla2.domain.DfqFreeze;
import com.ruoyi.swla2.service.IDfqFreezeService;

/**
 * 大分区冻结数据Service业务层处理
 *
 * @author gdqt
 * @date 2023-08-28
 */
@Service
public class DfqFreezeServiceImpl implements IDfqFreezeService {
    @Autowired
    private DfqFreezeMapper dfqFreezeMapper;

    /**
     * 查询大分区冻结数据
     *
     * @param id 大分区冻结数据主键
     * @return 大分区冻结数据
     */
    @Override
    public DfqFreeze selectDfqFreezeById(String id) {
        return dfqFreezeMapper.selectDfqFreezeById(id);
    }

    /**
     * 查询大分区冻结数据列表
     *
     * @param dfqFreeze 大分区冻结数据
     * @return 大分区冻结数据
     */
    @Override
    public List<DfqFreeze> selectDfqFreezeList(DfqFreeze dfqFreeze) {
        return dfqFreezeMapper.selectDfqFreezeList(dfqFreeze);
    }

    /**
     * 新增大分区冻结数据
     *
     * @param dfqFreeze 大分区冻结数据
     * @return 结果
     */
    @Override
    public int insertDfqFreeze(DfqFreeze dfqFreeze) {
        dfqFreeze.setCreateTime(DateUtils.getNowDate());
        return dfqFreezeMapper.insertDfqFreeze(dfqFreeze);
    }

    /**
     * 修改大分区冻结数据
     *
     * @param dfqFreeze 大分区冻结数据
     * @return 结果
     */
    @Override
    public int updateDfqFreeze(DfqFreeze dfqFreeze) {
        return dfqFreezeMapper.updateDfqFreeze(dfqFreeze);
    }

    /**
     * 批量删除大分区冻结数据
     *
     * @param ids 需要删除的大分区冻结数据主键
     * @return 结果
     */
    @Override
    public int deleteDfqFreezeByIds(String[] ids) {
        return dfqFreezeMapper.deleteDfqFreezeByIds(ids);
    }

    /**
     * 删除大分区冻结数据信息
     *
     * @param id 大分区冻结数据主键
     * @return 结果
     */
    @Override
    public int deleteDfqFreezeById(String id) {
        return dfqFreezeMapper.deleteDfqFreezeById(id);
    }

    @Override
    public List<DfqFreeze> selectDfqFreezeByQueryModel(FreezeDataQueryModel model) {
        return dfqFreezeMapper.selectDfqFreezeByQueryModel(model);
    }

    /**
     * @Description: 冻结数据报表
     * @date: 2025/2/24 11:19
     * @author: zt
     */
    @Override
    public List<DfqFreeze> selectDfqFreezeReportList(FreezeDataQueryModel model) {
        String areaId = model.getAreaId();
        //分区数据
        List<DfqFreeze> list = dfqFreezeMapper.selectDfqFreezeReportList(model);
        List<DfqFreeze> parentList = list.stream().filter(item -> item.getAreaid().length() == areaId.length()).collect(Collectors.toList());
        List<DfqFreeze> subList = list.stream().filter(item -> item.getAreaid().length() > areaId.length()).collect(Collectors.toList());
        //循环父数据
        for (DfqFreeze dfqFreeze : parentList) {
            String tempAreaId = dfqFreeze.getAreaid();
            List<DfqFreeze> children = subList.stream().filter(item -> item.getAreaid().startsWith(tempAreaId)).collect(Collectors.toList());
            if(!children.isEmpty()){
                dfqFreeze.setChildren(children);
            }
        }
        return parentList;
    }
}
